To some extent, pad and touchpad gesture events need extra API.
{
GtkGesturePrivate *priv;
PointData *data;
+ GdkEventType event_type;
priv = gtk_gesture_get_instance_private (gesture);
if (!data)
return 0;
+ event_type = gdk_event_get_event_type (data->event);
+
if (only_active &&
(data->state == GTK_EVENT_SEQUENCE_DENIED ||
- (data->event->type == GDK_TOUCHPAD_SWIPE &&
+ (event_type == GDK_TOUCHPAD_SWIPE &&
data->event->touchpad_swipe.phase == GDK_TOUCHPAD_GESTURE_PHASE_END) ||
- (data->event->type == GDK_TOUCHPAD_PINCH &&
+ (event_type == GDK_TOUCHPAD_PINCH &&
data->event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_END)))
return 0;
- switch (data->event->type)
+ switch (event_type)
{
case GDK_TOUCHPAD_SWIPE:
return data->event->touchpad_swipe.n_fingers;
GHashTableIter iter;
guint n_points = 0;
PointData *data;
+ GdkEventType event_type;
priv = gtk_gesture_get_instance_private (gesture);
g_hash_table_iter_init (&iter, priv->points);
while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &data))
{
+ event_type = gdk_event_get_event_type (data->event);
+
if (only_active &&
(data->state == GTK_EVENT_SEQUENCE_DENIED ||
- data->event->type == GDK_TOUCH_END ||
- data->event->type == GDK_BUTTON_RELEASE))
+ event_type == GDK_TOUCH_END ||
+ event_type == GDK_BUTTON_RELEASE))
continue;
n_points++;
_update_touchpad_deltas (PointData *data)
{
GdkEvent *event = data->event;
+ GdkEventType event_type;
if (!event)
return;
- if (event->type == GDK_TOUCHPAD_SWIPE)
+ event_type = gdk_event_get_event_type (event);
+
+ if (event_type == GDK_TOUCHPAD_SWIPE)
{
if (event->touchpad_swipe.phase == GDK_TOUCHPAD_GESTURE_PHASE_BEGIN)
data->accum_dx = data->accum_dy = 0;
data->accum_dy += event->touchpad_swipe.dy;
}
}
- else if (event->type == GDK_TOUCHPAD_PINCH)
+ else if (event_type == GDK_TOUCHPAD_PINCH)
{
if (event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_BEGIN)
data->accum_dx = data->accum_dy = 0;
GtkGesturePrivate *priv;
GdkDevice *source_device;
gboolean was_recognized;
+ GdkEventType event_type;
source_device = gdk_event_get_source_device (event);
priv = gtk_gesture_get_instance_private (gesture);
sequence = gdk_event_get_event_sequence (event);
was_recognized = gtk_gesture_is_recognized (gesture);
+ event_type = gdk_event_get_event_type (event);
if (gtk_gesture_get_sequence_state (gesture, sequence) != GTK_EVENT_SEQUENCE_DENIED)
priv->last_sequence = sequence;
- if (event->type == GDK_BUTTON_PRESS ||
- event->type == GDK_TOUCH_BEGIN ||
- (event->type == GDK_TOUCHPAD_SWIPE &&
+ if (event_type == GDK_BUTTON_PRESS ||
+ event_type == GDK_TOUCH_BEGIN ||
+ (event_type == GDK_TOUCHPAD_SWIPE &&
event->touchpad_swipe.phase == GDK_TOUCHPAD_GESTURE_PHASE_BEGIN) ||
- (event->type == GDK_TOUCHPAD_PINCH &&
+ (event_type == GDK_TOUCHPAD_PINCH &&
event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_BEGIN))
{
if (_gtk_gesture_update_point (gesture, event, TRUE))
}
}
}
- else if (event->type == GDK_BUTTON_RELEASE ||
- event->type == GDK_TOUCH_END ||
- (event->type == GDK_TOUCHPAD_SWIPE &&
+ else if (event_type == GDK_BUTTON_RELEASE ||
+ event_type == GDK_TOUCH_END ||
+ (event_type == GDK_TOUCHPAD_SWIPE &&
event->touchpad_swipe.phase == GDK_TOUCHPAD_GESTURE_PHASE_END) ||
- (event->type == GDK_TOUCHPAD_PINCH &&
+ (event_type == GDK_TOUCHPAD_PINCH &&
event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_END))
{
gboolean was_claimed;
return was_claimed && was_recognized;
}
- else if (event->type == GDK_MOTION_NOTIFY ||
- event->type == GDK_TOUCH_UPDATE ||
- (event->type == GDK_TOUCHPAD_SWIPE &&
+ else if (event_type == GDK_MOTION_NOTIFY ||
+ event_type == GDK_TOUCH_UPDATE ||
+ (event_type == GDK_TOUCHPAD_SWIPE &&
event->touchpad_swipe.phase == GDK_TOUCHPAD_GESTURE_PHASE_UPDATE) ||
- (event->type == GDK_TOUCHPAD_PINCH &&
+ (event_type == GDK_TOUCHPAD_PINCH &&
event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_UPDATE))
{
- if (event->type == GDK_MOTION_NOTIFY)
+ if (event_type == GDK_MOTION_NOTIFY)
{
if ((event->motion.state & BUTTONS_MASK) == 0)
return FALSE;
_gtk_gesture_check_recognized (gesture, sequence))
g_signal_emit (gesture, signals[UPDATE], 0, sequence);
}
- else if (event->type == GDK_TOUCH_CANCEL)
+ else if (event_type == GDK_TOUCH_CANCEL)
{
if (!priv->touchpad)
_gtk_gesture_cancel_sequence (gesture, sequence);
}
- else if ((event->type == GDK_TOUCHPAD_SWIPE &&
+ else if ((event_type == GDK_TOUCHPAD_SWIPE &&
event->touchpad_swipe.phase == GDK_TOUCHPAD_GESTURE_PHASE_CANCEL) ||
- (event->type == GDK_TOUCHPAD_PINCH &&
+ (event_type == GDK_TOUCHPAD_PINCH &&
event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_CANCEL))
{
if (priv->touchpad)
_gtk_gesture_cancel_sequence (gesture, sequence);
}
- else if (event->type == GDK_GRAB_BROKEN)
+ else if (event_type == GDK_GRAB_BROKEN)
{
if (!event->grab_broken.grab_window ||
!gesture_within_window (gesture, event->grab_broken.grab_window))
GList *sequences = NULL;
GHashTableIter iter;
PointData *data;
+ GdkEventType event_type;
g_return_val_if_fail (GTK_IS_GESTURE (gesture), NULL);
{
if (data->state == GTK_EVENT_SEQUENCE_DENIED)
continue;
- if (data->event->type == GDK_TOUCH_END ||
- data->event->type == GDK_BUTTON_RELEASE)
+
+ event_type = gdk_event_get_event_type (data->event);
+
+ if (event_type == GDK_TOUCH_END ||
+ event_type == GDK_BUTTON_RELEASE)
continue;
sequences = g_list_prepend (sequences, sequence);
GHashTableIter iter;
guint n_points = 0;
PointData *data;
+ GdkEventType event_type;
g_return_val_if_fail (GTK_IS_GESTURE (gesture), FALSE);
g_return_val_if_fail (rect != NULL, FALSE);
if (data->state == GTK_EVENT_SEQUENCE_DENIED)
continue;
- if (data->event->type == GDK_TOUCH_END ||
- data->event->type == GDK_BUTTON_RELEASE)
+
+ event_type = gdk_event_get_event_type (data->event);
+
+ if (event_type == GDK_TOUCH_END ||
+ event_type == GDK_BUTTON_RELEASE)
continue;
gdk_event_get_coords (data->event, &x, &y);
while (g_hash_table_iter_next (&iter, (gpointer*) &seq, (gpointer*) &data))
{
- switch (data->event->type)
+ switch (gdk_event_get_event_type (data->event))
{
case GDK_TOUCH_BEGIN:
case GDK_TOUCH_UPDATE:
const GdkEvent *event)
{
/* Let touchpad swipe events go through, only if they match n-points */
- if (event->type == GDK_TOUCHPAD_SWIPE)
+ if (gdk_event_get_event_type (event) == GDK_TOUCHPAD_SWIPE)
{
guint n_points;
{
GtkGestureLongPressPrivate *priv;
const GdkEvent *event;
+ GdkEventType event_type;
GtkWidget *widget;
gint delay;
sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
event = gtk_gesture_get_last_event (gesture, sequence);
- if (!event ||
- (event->type != GDK_BUTTON_PRESS &&
- event->type != GDK_TOUCH_BEGIN))
+ if (!event)
+ return;
+
+ event_type = gdk_event_get_event_type (event);
+
+ if (event_type != GDK_BUTTON_PRESS &&
+ event_type != GDK_TOUCH_BEGIN)
return;
widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (gesture));
guint n_presses, button = 1;
GdkEventSequence *current;
const GdkEvent *event;
+ GdkEventType event_type;
GdkDevice *device;
gdouble x, y;
event = gtk_gesture_get_last_event (gesture, sequence);
current = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
device = gdk_event_get_source_device (event);
+ event_type = gdk_event_get_event_type (event);
- if (event->type == GDK_BUTTON_PRESS)
- button = event->button.button;
- else if (event->type == GDK_TOUCH_BEGIN)
+ if (event_type == GDK_BUTTON_PRESS)
+ gdk_event_get_button (event, &button);
+ else if (event_type == GDK_TOUCH_BEGIN)
button = 1;
else
return;
last_event = gtk_gesture_get_last_event (gesture, sequences->data);
- if (last_event->type == GDK_TOUCHPAD_PINCH &&
+ if (gdk_event_get_event_type (last_event) == GDK_TOUCHPAD_PINCH &&
(last_event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_BEGIN ||
last_event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_UPDATE ||
last_event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_END))
const GdkEvent *event)
{
/* Let 2-finger touchpad pinch events go through */
- if (event->type == GDK_TOUCHPAD_PINCH)
+ if (gdk_event_get_event_type (event) == GDK_TOUCHPAD_PINCH)
{
if (event->touchpad_pinch.n_fingers == 2)
return FALSE;
priv = gtk_gesture_rotate_get_instance_private (rotate);
- if (event->type == GDK_TOUCHPAD_PINCH)
+ if (gdk_event_get_event_type (event) == GDK_TOUCHPAD_PINCH)
{
if (event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_BEGIN ||
event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_END)
GtkGestureSinglePrivate *priv;
GdkDevice *source_device;
GdkInputSource source;
- guint button = 0, i;
+ guint button = 0, state, i;
gboolean retval, test_touchscreen = FALSE;
+ GdkEventType event_type;
source_device = gdk_event_get_source_device (event);
if (source != GDK_SOURCE_TOUCHSCREEN)
test_touchscreen = gtk_simulate_touchscreen ();
- switch (event->type)
+ event_type = gdk_event_get_event_type (event);
+
+ switch (event_type)
{
case GDK_TOUCH_BEGIN:
case GDK_TOUCH_END:
if (priv->exclusive && !event->touch.emulating_pointer)
return FALSE;
- sequence = event->touch.sequence;
+ sequence = gdk_event_get_event_sequence (event);
button = 1;
break;
case GDK_BUTTON_PRESS:
if (priv->touch_only && !test_touchscreen && source != GDK_SOURCE_TOUCHSCREEN)
return FALSE;
- button = event->button.button;
+ gdk_event_get_button (event, &button);
break;
case GDK_MOTION_NOTIFY:
if (!gtk_gesture_handles_sequence (GTK_GESTURE (controller), sequence))
return FALSE;
if (priv->touch_only && !test_touchscreen && source != GDK_SOURCE_TOUCHSCREEN)
return FALSE;
+ if (!gdk_event_get_state (event, &state))
+ return FALSE;
if (priv->current_button > 0 && priv->current_button <= 5 &&
- (event->motion.state & (GDK_BUTTON1_MASK << (priv->current_button - 1))))
+ (state & (GDK_BUTTON1_MASK << (priv->current_button - 1))))
button = priv->current_button;
else if (priv->current_button == 0)
{
/* No current button, find out from the mask */
for (i = 0; i < 3; i++)
{
- if ((event->motion.state & (GDK_BUTTON1_MASK << i)) == 0)
+ if ((state & (GDK_BUTTON1_MASK << i)) == 0)
continue;
button = i + 1;
break;
return FALSE;
}
- if (event->type == GDK_BUTTON_PRESS || event->type == GDK_TOUCH_BEGIN ||
- event->type == GDK_MOTION_NOTIFY || event->type == GDK_TOUCH_UPDATE)
+ if (event_type == GDK_BUTTON_PRESS || event_type == GDK_TOUCH_BEGIN ||
+ event_type == GDK_MOTION_NOTIFY || event_type == GDK_TOUCH_UPDATE)
{
if (!gtk_gesture_is_active (GTK_GESTURE (controller)))
priv->current_sequence = sequence;
retval = GTK_EVENT_CONTROLLER_CLASS (gtk_gesture_single_parent_class)->handle_event (controller, event);
if (sequence == priv->current_sequence &&
- (event->type == GDK_BUTTON_RELEASE || event->type == GDK_TOUCH_END))
+ (event_type == GDK_BUTTON_RELEASE || event_type == GDK_TOUCH_END))
priv->current_button = 0;
else if (priv->current_sequence == sequence &&
!gtk_gesture_handles_sequence (GTK_GESTURE (controller), sequence))
{
- if (button == priv->current_button && event->type == GDK_BUTTON_PRESS)
+ if (button == priv->current_button && event_type == GDK_BUTTON_PRESS)
priv->current_button = 0;
- else if (sequence == priv->current_sequence && event->type == GDK_TOUCH_BEGIN)
+ else if (sequence == priv->current_sequence && event_type == GDK_TOUCH_BEGIN)
priv->current_sequence = NULL;
}
const GdkEvent *event)
{
/* Let touchpad swipe events go through, only if they match n-points */
- if (event->type == GDK_TOUCHPAD_SWIPE)
+ if (gdk_event_get_event_type (event) == GDK_TOUCHPAD_SWIPE)
{
guint n_points;
last_event = gtk_gesture_get_last_event (gesture, sequences->data);
- if (last_event->type == GDK_TOUCHPAD_PINCH &&
+ if (gdk_event_get_event_type (last_event) == GDK_TOUCHPAD_PINCH &&
(last_event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_BEGIN ||
last_event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_UPDATE ||
last_event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_END))
const GdkEvent *event)
{
/* Let 2-finger touchpad pinch events go through */
- if (event->type == GDK_TOUCHPAD_PINCH)
+ if (gdk_event_get_event_type (event) == GDK_TOUCHPAD_PINCH)
{
if (event->touchpad_pinch.n_fingers == 2)
return FALSE;
const GdkEvent *event)
{
GtkPadController *pad_controller = GTK_PAD_CONTROLLER (controller);
+ GdkEventType event_type = gdk_event_get_event_type (event);
- if (event->type != GDK_PAD_BUTTON_PRESS &&
- event->type != GDK_PAD_BUTTON_RELEASE &&
- event->type != GDK_PAD_RING &&
- event->type != GDK_PAD_STRIP &&
- event->type != GDK_PAD_GROUP_MODE)
+ if (event_type != GDK_PAD_BUTTON_PRESS &&
+ event_type != GDK_PAD_BUTTON_RELEASE &&
+ event_type != GDK_PAD_RING &&
+ event_type != GDK_PAD_STRIP &&
+ event_type != GDK_PAD_GROUP_MODE)
return TRUE;
if (pad_controller->pad &&
const GdkEvent *event)
{
GtkPadController *pad_controller = GTK_PAD_CONTROLLER (controller);
+ GdkEventType event_type = gdk_event_get_event_type (event);
const GtkPadActionEntry *entry;
GtkPadActionType type;
gint index, mode;
- if (event->type == GDK_PAD_GROUP_MODE)
+ if (event_type == GDK_PAD_GROUP_MODE)
{
gtk_pad_controller_handle_mode_switch (pad_controller,
gdk_event_get_source_device (event),
return GDK_EVENT_PROPAGATE;
}
- switch (event->type)
+ switch (event_type)
{
case GDK_PAD_BUTTON_PRESS:
type = GTK_PAD_ACTION_BUTTON;
break;
case GDK_PAD_RING:
case GDK_PAD_STRIP:
- type = event->type == GDK_PAD_RING ?
+ type = event_type == GDK_PAD_RING ?
GTK_PAD_ACTION_RING : GTK_PAD_ACTION_STRIP;
index = event->pad_axis.index;
mode = event->pad_axis.mode;
if (!entry)
return GDK_EVENT_PROPAGATE;
- if (event->type == GDK_PAD_RING ||
- event->type == GDK_PAD_STRIP)
+ if (event_type == GDK_PAD_RING ||
+ event_type == GDK_PAD_STRIP)
{
gtk_pad_controller_activate_action_with_axis (pad_controller, entry,
event->pad_axis.value);